iT邦幫忙

2022 iThome 鐵人賽

DAY 23
1
DevOps

從零開始的 Jenkins 之旅系列 第 23

第二十三天 Jenkins 之旅: 我的 BI 報表 Pipeline (3)

  • 分享至 

  • xImage
  •  

Pod deploy

在做 CD Pipeline 之前我們先測看看 deploy 的 command 是否可以使用。

cd deploy/kubernetes/ithome_crawler

helm upgrade ithome-crawler . --install --namespace {{ NAMESPACE }}\
    --set schedule="50 20 * * *" \
    --set env.mongo.host={{ MONGO_HOST }} \
    --set env.mongo.db=ithome_ironman

這邊我們會在 kubernetes 起出一個 cronjob ,並在 "50 20 * * *" 時,會幫我們自動起出一個 Pod 執行爬蟲任務。
https://ithelp.ithome.com.tw/upload/images/20220923/20151613FVB63awAs2.png
確認資料是否寫入 MongoDB
https://ithelp.ithome.com.tw/upload/images/20220923/20151613mxevLBAH2J.png


CD Pipeline

https://ithelp.ithome.com.tw/upload/images/20220923/20151613jgxEu70iZD.png

  1. 我們 CD 的流程皆會寫在 Github project 中的 Jenkinsfile.CD
  2. 在 CD Pipeline 啟動時,會去同步 git main branch 上的 source code (Jenkinsfile),並開始執行宣告的 stage。
  3. 執行到 Deploy to k8s 時,會以 helm upgrade --install 更新在 k8s 上的 Cronjob 設定。
  4. 當指定時間到時,Cronjob 會去 github container registry 拉取指定版本的 image 並執行。
pipeline{
    agent {
            label 'gcp-agent-1'
        }
    parameters {
        string(name: 'IMAGE_TAG', defaultValue: 'latest')
        string(name: 'K8S_CRONJOB')
    }
    environment {
        K8S_NAMESPACE = "prod"
    }

    stages{
        stage("Deploy to k8s"){
            steps{
                withCredentials([string(credentialsId: 'mongo-connection', variable: 'MONGO_HOST')]){
                    script{
                        sh """
                        helm upgrade ithome-crawler deploy/kubernetes/ithome_crawler --install --namespace ${K8S_NAMESPACE}\
                            --set schedule="${K8S_CRONJOB}" \
                            --set env.mongo.host="${MONGO_HOST}" \
                            --set env.mongo.db=ithome_ironman \
                            --set image.tag=${IMAGE_TAG}
                        """
                    }
                }
            }
        }
    }
    post{
        always{
            cleanWs()
        }
    }
}

在 CD pipeline 中,我們設定將 latest 的 image 指定為我們 Pod 啟動時的 image 檔案。
https://ithelp.ithome.com.tw/upload/images/20220923/20151613BnsoymwcF0.png

Jenkins pipeline 執行結果
https://ithelp.ithome.com.tw/upload/images/20220923/20151613DTLodAbqtk.png
https://ithelp.ithome.com.tw/upload/images/20220923/20151613OOMxvmdvi7.png


上一篇
第二十二天 Jenkins 之旅: 我的 BI 報表 Pipeline (2)
下一篇
第二十四天 Jenkins 之旅: 我的 BI 報表 Pipeline (4)
系列文
從零開始的 Jenkins 之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言